In computing, regular expressions can provide a search language enabling a user to process strings to find patterns. Regular expressions, or regex, provide a syntax that allows a user to input a pattern and pattern rules for programmatically generating a pattern in order to perform pattern matching, such as find and find/replace functions. Generally, regular expressions in a programming language may be implemented in one of two ways. A regular expression may be compiled to a data structure corresponding to a state machine having state transitions that represent the regular expression. When a script including the regular expression runs, an interpretation algorithm in a system's user mode is invoked on the data structure to perform string matching. The second implementation of regular expressions includes using a language preprocessor to replace the regular expression in the script with source code in the script. The source code then hard codes state transitions for a state machine using the programming languages control structures.
SystemTap offers infrastructure to access a range of diagnostic facilities for a system, including kernel-internal diagnostic tools. SystemTap implements a system-wide instrumentation language, which provides a scripting language to obtain data about processes and events occurring on the system. This allows a user to troubleshoot and perform analysis of the system. SystemTap includes a loader program and a runtime environment having runtime libraries. The loader program receives a script from a user that contains probes of the systems functions. The probes contain events and handlers, where the event names some activity on the system and the handler describes steps to be done when the event occurs. Once the script is received, it is translated into C. Tapsets may be used to define prewritten probes that are replaced when the script is translated. The C code is then compiled into a kernel module and loaded to the kernel.
SystemTap runtime environment consists of a set of runtime libraries linked to the compiled C code and are used to implement basic operations to access the system. The results of handlers contained in the compiled C code are displayed in the output of the script. The SystemTap script may be invoked from the SystemTap loader program from a command line. Thus, users are given a tool to diagnose system behavior during named events.